Be/#307 QueryDSL을 사용한 API에서 createdAt으로 정렬안되는 오류 수정 #308
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🛠️ 변경사항
QueryDSL을 사용한 조회 API에서 정렬이 안되는 문제 발견
검색해 본 결과, QueryDSL에서 Pagable을 그대로 쓰고는 정렬 불가능
코드 설명 :
Pageable 객체를 받아 Sort에 정의된 순서대로 엔티티의 특정 필드를 정렬하는 OrderSpecifier 객체 목록 생성
getSortedColumn 메서드에서 주어진 필드명과 부모 경로를 바탕으로 OrderSpecifier 객체를 생성
Pageable과 엔티티 타입을 인자로 받아 해당 엔티티에 대한 createdAt 필드를 기준으로 정렬
각 CustomRepositoryImpl에는
List<OrderSpecifier> ORDERS = QueryDslUtil.getAllOrderSpecifiers(pageable, 엔티티 타입);
위와 같이 리스트를 생성하여
.orderBy(ORDERS.stream().toArray(OrderSpecifier[]::new))
로 정렬 추가☝️ 유의사항
만약 리스트 조회를 해야하는 엔티티가 또 생기면 QueryDslUtil.java에 case 추가하면 됨
👀 참고자료
https://uchupura.tistory.com/7
❗체크리스트